Field of the Invention
The present invention relates to a Software Defined Network (SDN) and a communication network comprising the same. In particular, but not exclusively, the SDN is a Layer 7 Software Defined Network.
Description of the Related Technology
Software Defined Networking (SDN) is a networking solution relating to the routing of data across a network comprising programmable switches. A SDN may for example comprise communication links between programmable network switches, for example OpenFlow switches, which route packets across the network according to flow tables associated with each switch. The flow tables of each programmable switch may be defined and/or updated by a SDN controller, which has an overview of the route to be taken by a flow of data packets through the SDN.
A schematic flow table of an exemplary SDN switch S1 is presented in FIG. 1. The exemplary flow table contains a flow header field to identify the flows for which the associated actions in the flow table are defined. In the exemplary flow table of S1, each IP flow is identified by a so called 5-tuple, comprising source IP address (SRC IP) and port number (SRC PORT), destination IP address (DST IP) and port number (DST PORT), and the protocol (PROTO) associated with a flow. The exemplary flow table also comprises an action field for each flow header, for example, to which port number of the switch S1 the associated flow should be forwarded. The flow table may also comprise other fields such as number of packets (Packet No.) received for a given flow and the time (t from last match) since a last match of a given flow header with a received packet, for example in order to identify inactive flows.
If a switch of an SDN receives a flow having a 5 Tuple that is not included in its flow table, one or more of the packets of the flow may sent by the switch to a SDN controller. The SDN controller may then use these packets to decide if the flow should be added to the flow table, and may update the flow table accordingly.
The controller may update the flow table of each switch under its control with the Flow header and action required at each switch in order to route the flow through the network as required. Each switch may have a plurality of entries in its flow table to route different flows to different locations. The switch may take other actions on flows, for example in the third row of the exemplary flow table of FIG. 1, the switch is programmed to terminate any flows with flow header [SRC IP=K, SRC PORT=L, DST IP=M, DST PORT=N, PROTO=O].
It is known that multiple network applications or functions can be configured together to form a so called ‘service chain’ and a SDN can be configured to route data of a data flow through each application in the service chain in turn.
It is standard to consider a data network as being logically arranged as stack of logical layers (e.g. the very well-known OSI model which has seven logical layers) each layer performing a set of service for the layer above it. To date, in the context of a SDN, the services provided by applications in a service chain are typically limited to Layer 2 (Data-Link Layer), Layer 3 (Network Layer), or Layer 4 (Transport Layer) services such as Deep Packet Inspection (DPI), firewall services or the like.
Increasingly, it is desirable to provide Layer 7 (Application Layer) applications in service chains in a SDN.